#Использовать 1commands
#Использовать "../../src/core"

Перем Лог; // логгер

Функция СервисГотов()

	СистемнаяИнформация = Новый СистемнаяИнформация;
	ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0;

	КодировкаВывода = КодировкаТекста.UTF8;
	Если ЭтоWindows Тогда
		КодировкаВывода = КодировкаТекста.OEM;
	КонецЕсли;

	Команда = Новый Команда();
	Команда.УстановитьКоманду("curl");
	Команда.УстановитьКодировкуВывода(КодировкаВывода);
	Команда.ДобавитьПараметр("-I");
	Команда.ДобавитьПараметр("-L");
	Команда.ДобавитьПараметр("-s");
	Команда.ДобавитьПараметр("http://localhost:8080");

	Команда.УстановитьИсполнениеЧерезКомандыСистемы(Ложь);
	Команда.ПоказыватьВыводНемедленно(Ложь);

	Лог.Информация("Проверка готовности сервиса NextCloud");

	КодВозврата = Команда.Исполнить();
	
	ВыводКоманды = Команда.ПолучитьВывод();

	Если НЕ КодВозврата = 0 Тогда
		Возврат Ложь;
	КонецЕсли;

	РВ = Новый РегулярноеВыражение("HTTP\/1.1\s*(\d{3})");
	Совпадения = РВ.НайтиСовпадения(ВыводКоманды);

	Если Совпадения.Количество() = 0 Тогда
		Возврат Ложь;
	КонецЕсли;

	Для Каждого ТекСовпадение Из Совпадения Цикл
		Если СокрЛП(ТекСовпадение.Группы[1].Значение) = "200" Тогда
			Возврат Истина;
		КонецЕсли;
	КонецЦикла;

	Возврат Ложь;

КонецФункции // СервисГотов()

Процедура Инициализация() Экспорт
	
	Лог = ПараметрыСистемы.Лог();

КонецПроцедуры

Инициализация();

Счетчик = 0;
Пока НЕ СервисГотов() И Счетчик < 20 Цикл
	Приостановить(10000);
	Счетчик = 0;
КонецЦикла;

Если НЕ СервисГотов() Тогда
	ВызватьИсключение "Истекло время ожидания запуска сервиса NextCloud";
КонецЕсли;

Лог.Информация("Контейнер NextCloud запущен.");
